package com.boot.study;

import org.dromara.pdf.fop.core.doc.Document;
import org.dromara.pdf.fop.core.doc.component.barcode.Barcode;
import org.dromara.pdf.fop.core.doc.component.block.BlockContainer;
import org.dromara.pdf.fop.core.doc.component.image.Image;
import org.dromara.pdf.fop.core.doc.component.line.SplitLine;
import org.dromara.pdf.fop.core.doc.component.text.Text;
import org.dromara.pdf.fop.core.doc.page.Page;
import org.dromara.pdf.fop.handler.TemplateHandler;
import org.junit.Test;

/**
 * @Author likz
 * @Date 2024/9/23 11:49
 * @Description
 **/
public class TestApi {


    /**
     * 创建块容器
     */
    @Test
    public void test04(){
        // 定义输出路径
        String outputPath = "D:\\pdf\\test\\fo\\testCon.pdf";
// 创建文档
        Document document = TemplateHandler.Document.build();
// 创建页面
        Page page = TemplateHandler.Page.build().setFontFamily("微软雅黑");
// 创建普通文本
        Text leftText = TemplateHandler.Text.build().setText("左侧文本");
// 创建普通文本
        Text rightText = TemplateHandler.Text.build().setText("右侧文本");
// 创建图像
        Image image = TemplateHandler.Image.build()
                // 设置图像路径（绝对路径）
                .setPath("/D:\\pdf\\test\\fo\\jianfan.png")
                // 设置图像宽度
                .setWidth("150px")
                // 设置图像高度
                .setHeight("150px");
// 创建容器
        BlockContainer container = TemplateHandler.BlockContainer.build();
// 添加容器组件
        container.addComponent(leftText, image, rightText);
// 添加页面主体组件
        page.addBodyComponent(container);
// 添加页面
        document.addPage(page);
// 转换pdf
        document.transform(outputPath);

    }


    /**
     *  测试 图像
     */
    @Test
    public void test3(){
        // 定义输出路径
        String outputPath = "D:\\pdf\\test\\fo\\testImage.pdf";
// 创建文档
        Document document = TemplateHandler.Document.build();
// 创建页面
        Page page = TemplateHandler.Page.build();
// 创建图像
        Image image = TemplateHandler.Image.build()
                // 设置图像路径（绝对路径）
                .setPath("/D:\\pdf\\test\\fo\\sm.jpg")
                // 设置图像宽度
                .setWidth("100px")
                // 设置图像高度
                .setHeight("30px")
                // 设置水平居中
                .setHorizontalStyle("center");
// 添加图像
        page.addBodyComponent(image);
// 添加页面
        document.addPage(page);
// 转换pdf
        document.transform(outputPath);

    }

    /**
     * 测试二维码
     */
    @Test
    public void testCode(){
        // 定义输出路径
        String outputPath = "D:\\pdf\\test\\fo\\codabar.pdf";
// 创建文档
        Document document = TemplateHandler.Document.build();
// 创建页面
        Page page=TemplateHandler.Page.build();
// 创建条形码
        Barcode codabar = TemplateHandler.Barcode.build()
                // 设置类型
                .setType("codabar")
                // 设置宽度
                .setWidth("150px")
                // 设置高度
                .setHeight("50px")
                // 设置内容
                .setContent("11223344")
                // 设置水平居中
                .setHorizontalStyle("center");
// 创建二维码
        Barcode qrCode = TemplateHandler.Barcode.build()
                // 设置类型
                .setType("qr_code")
                // 设置宽度
                .setWidth("150px")
                // 设置高度
                .setHeight("150px")
                // 设置内容
                .setContent("https://www.x-easypdf.cn")
                // 设置显示文本
                .setWords("https://www.x-easypdf.cn")
                // 设置水平居中
                .setHorizontalStyle("center");
// 添加条码
        page.addBodyComponent(codabar,qrCode);
// 添加页面
        document.addPage(page);
// 转换pdf
        document.transform(outputPath);

    }


    /**
     * 测试分割线
     */
    @Test
    public void test(){
        // 定义输出路径
        String outputPath="D:\\pdf\\test\\fo\\test.pdf";
    // 创建文档
        Document document = TemplateHandler.Document.build();
    // 创建页面
        Page page = TemplateHandler.Page.build();
    // 创建点线
        SplitLine dotted = TemplateHandler.SplitLine.build().setStyle("dotted").setLength("100%");
    // 创建虚线
        SplitLine dashed = TemplateHandler.SplitLine.build().setStyle("dashed").setLength("100%");
// 创建实线
        SplitLine solid = TemplateHandler.SplitLine.build().setStyle("solid").setLength("100%");
// 创建双实线
        SplitLine doubled = TemplateHandler.SplitLine.build().setStyle("double").setLength("100%");
// 创建槽线
        SplitLine groove = TemplateHandler.SplitLine.build().setStyle("groove").setLength("100%");
// 创建脊线
        SplitLine ridge = TemplateHandler.SplitLine.build().setStyle("ridge").setLength("100%");
// 添加分割线
        page.addBodyComponent(dotted,dashed,solid,doubled,groove,ridge);
// 添加页面
        document.addPage(page);
// 转换pdf
        document.transform(outputPath);

    }

    /**
     * 测试页眉
     */
    @Test
    public void test2(){
        // 定义输出路径
        String outputPath = "D:\\pdf\\test\\fo\\test5.pdf";
// 创建文档
        Document document = TemplateHandler.Document.build();
// 创建页面（空白页）
        Page page = TemplateHandler.Page.build();
// 创建页眉文本
        Text headerText = TemplateHandler.Text.build().setText("页眉").setFontFamily("微软雅黑");
// 创建页面主体文本
        Text bodyText = TemplateHandler.Text.build().setText("页面内容").setFontFamily("微软雅黑");
// 设置页眉高度并添加页眉文本
        page.setHeaderHeight("30pt").addHeaderComponent(headerText);
// 设置页面主体上边距并添加页面主体文本
        page.setBodyMarginTop("30pt").addBodyComponent(bodyText);
// 添加页面
        document.addPage(page);
// 转换pdf
        document.transform(outputPath);


    }


}
